const fs = require('fs');

const fileService = require('../service/file.service');

const {
    APP_HOST,
    APP_PORT
} = require('../app/config');

const {
    AVATAR_PATH 
} = require('../app/file-path');

class FileController {
    async saveAvatarInfo(ctx, next) {
    //    console.log(ctx.req.file);
       //打印
    //    {
    //     fieldname: 'avatar',
    //     originalname: '662B92167A9CC90656EBAEC234856BA0.png',
    //     encoding: '7bit',
    //     mimetype: 'image/png',
    //     destination: './upload',
    //     filename: '1617634848617.png',
    //     path: 'upload\\1617634848617.png',
    //     size: 307028
    //   }n  n
   try {

    //获取图像相关的信息
    const {filename, mimetype, size} = ctx.req.file;
    const userId = ctx.user.id;

    //将图像信息保存到数据库中
    //因为这里不需要将信息返回给客户端,只需要将信息存储起来即可,所以没有要返回值
     await fileService.createAvatar(filename, mimetype, size, userId);
    

    const avatarUrl = `${APP_HOST}:${APP_PORT}/upload/${userId}/avatar`;
    await fileService.updateAvatarUrlById(avatarUrl, userId);

    ctx.body = '用户上传头像成功'; 
   } catch (err) {
       console.log(err);
   }
}






    async avatarInfo (ctx, next) {
     try {
        const {
            id
        } = ctx.params;
        // console.log(userId);

        const result = await fileService.getAvatarByUserId(id);
        // console.log(result);
         //大印
        //  BinaryRow {
        //     id: 1,
        //     filename: '1617674450696.jpg',
        //     mimetype: 'image/jpeg',
        //     size: 60995,
        //     user_id: 1,
        //     createAt: 2021-04-06T02:00:50.000Z,
        //     updateAt: 2021-04-06T02:00:50.000Z
        //   }



        // console.log(`${AVATAR_PATH}/${result.filename}`)  //打印: ./uploads/avatar/1617674450696.jpg

        ctx.response.set('content-type', result.mimetype);
        ctx.body = fs.createReadStream(`${AVATAR_PATH}/${result.filename}`);    //注：这里必须要使用引号包起来，因为参数必须是字符串类型，因为这里还要使用变量，使用我们使用反引号
        // readStream.on("open", function () {
        //     console.log("数据流和文件建立关系成功");
        // });
        // readStream.on("error", function () {
        //     console.log("数据流和文件建立关系失败");
        // });

        // //data事件触发之后，函数中的形参data中就是读取的数据
        // readStream.on("data", function (data) {
        //     ctx.response.set('content-type', result.mimetype);
        
        //     ctx.body = data;BG
        // });
        // readStream.on("close", function () {
        //     console.log("数据流断开了和文件的关系，并且数据已经读取完毕了");
        // });
    } catch (err) {
         console.log(err);
    }
    }



      //上传动态配图
    async savePictureInfo (ctx, next) {
     try {
          //1.获取图像信息
          const files = ctx.req.files;
        //   console.log(files);
          const {
              momentId
          } = ctx.params;
          console.log(momentId)

          const userId = ctx.user.id;
   
          for(let file of files) {
              const { filename, mimetype, size} = file;
            //   console.log(filename, mimetype, size);   //打印：463d72bf99a8f53263698409f9ace0f9 image/jpeg 60995
              await fileService.createPicture(filename, mimetype, size, userId, momentId);
          }
          ctx.body = '上传配图成功';
     } catch (err) {
         console.log(err);
     }
    }





}

module.exports = new FileController();